﻿namespace Collaboris.SharePoint.Wss.Attributes
{
    using System;

    [AttributeUsage(AttributeTargets.Class)]
    public class CollaborisClassAttribute : Attribute
    {
        #region Constants and Fields

        private string classGuid;

        private string contactAuthorEmail;

        private bool disableDocumentation;

        private ReleaseStatus releaseStatus;

        private string remarks;

        private string summary = string.Empty;

        private string title = string.Empty;

        private bool undoImplemented;

        private string[] supportFiles;

        #endregion

        #region Properties

        /// <summary>
        /// Gets or sets the class GUID.
        /// </summary>
        /// <value>The class GUID.</value>
        public string ClassGuid
        {
            get
            {
                return this.classGuid;
            }
            set
            {
                this.classGuid = value;
            }
        }

        /// <summary>
        /// Gets or sets the contact author email.
        /// </summary>
        /// <value>The contact author email.</value>
        public string ContactAuthorEmail
        {
            get
            {
                return this.contactAuthorEmail;
            }
            set
            {
                this.contactAuthorEmail = value;
            }
        }

        public String[] SupportFiles
        {
            get
            {
                return this.supportFiles;
            }
            set
            {
                this.supportFiles = value;
            }
        }

        /// <summary>
        /// Gets or sets a value indicating whether [disable documentation].
        /// </summary>
        /// <value><c>true</c> if [disable documentation]; otherwise, <c>false</c>.</value>
        public bool DisableDocumentation
        {
            get
            {
                return this.disableDocumentation;
            }
            set
            {
                this.disableDocumentation = value;
            }
        }

        /// <summary>
        /// Gets or sets the release status.
        /// </summary>
        /// <value>The release status.</value>
        public ReleaseStatus ReleaseStatus
        {
            get
            {
                return this.releaseStatus;
            }
            set
            {
                this.releaseStatus = value;
            }
        }

        /// <summary>
        /// Gets or sets the remarks.
        /// </summary>
        /// <value>The remarks.</value>
        public string Remarks
        {
            get
            {
                return this.remarks;
            }
            set
            {
                this.remarks = value;
            }
        }

        /// <summary>
        /// Description about the Action Class.
        /// </summary>
        public string Summary
        {
            get
            {
                return this.summary;
            }
            set
            {
                this.summary = value;
            }
        }

        /// <summary>
        /// Friendly Name of the Property.
        /// </summary>
        public string Title
        {
            get
            {
                return this.title;
            }
            set
            {
                this.title = value;
            }
        }

        /// <summary>
        /// Gets or sets a value indicating whether [undo implemented].
        /// </summary>
        /// <value><c>true</c> if [undo implemented]; otherwise, <c>false</c>.</value>
        public bool UndoImplemented
        {
            get
            {
                return this.undoImplemented;
            }
            set
            {
                this.undoImplemented = value;
            }
        }

        #endregion
    }
}